<!--
  功能：实训学生信息导入
  作者：licy
  邮箱：licy@briup.com
  时间：2020年12月15日 19:31:00
  版本：v1.0
  修改记录：
  修改内容：
  修改人员：
  修改时间：
-->
<template>
  <div class='student_import'>
    <el-page-header size="small" @back="goBack" content="实训学生信息导入"> </el-page-header>
    <div class="student_import_content">
      <p>1. 下载报名表模板</p>
      <div>
        <el-button type="primary" round size="small" @click="downloadTemplate">点击下载</el-button>
      </div>
      <p>2. 完善生源信息</p>
      <el-form size="mini" label-width="80px" label-position="center" ref="form_import" :rules="rules" :model="form">
        <el-form-item label="渠道" prop="channelId">
          <el-cascader filterable style="width:100%"  v-model="form.channelId" clearable :options="channels" placeholder="请选择院校渠道"
      :props="{ children:'children',label:'name',value:'id', emitPath: false}" @change="loadTrains"></el-cascader>
        </el-form-item>
        <el-form-item label="实训" prop="trainId">
          <el-select  style="width:100%"  v-model="form.trainId">
            <el-option v-for="t in trainData.list" :key="t.id" :label="t.name" :value="t.id"></el-option>
          </el-select>
        </el-form-item>
        <el-row>
          <el-col :span="12">
            <el-form-item label="毕业时间" prop="graduationTime">
              <el-date-picker v-model="form.graduationTime" value-format="timestamp" type="date" placeholder="选择日期" />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="学历水平" prop="education">
              <el-select v-model="form.education">
                <el-option label="大专" value="大专"></el-option>
                <el-option label="普通本科" value="普通本科"></el-option>
                <el-option label="211本科" value="211本科"></el-option>
                <el-option label="985本科" value="985本科"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>

      <p>3. 上传花名册</p>
      <div style="text-align:center">
        <el-upload
          ref="upload"
          :auto-upload="false"
          class="upload-demo"
          :on-success="successSubmitHandler"
          drag
          :data="form"
          action="http://218.4.196.178:8008/studentTrain/upload"
          multiple>
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">将文件拖到此处，或<em>点击上传</em></div>
          <div class="el-upload__tip" slot="tip">
            <p style="color:red;font-size:10px">注意：点击确定后完成批量导入！不要重复导入！不要修改模板！</p>
          </div>
        </el-upload>
      </div>
      <div style="text-align:right">
        <el-button size="small" @click="visible_import = false">取消</el-button>
        <el-button size="small" type="primary" @click="importSubmitHandler">确定</el-button>
      </div>
    </div>
  </div>
</template>

<script>
import {mapGetters} from 'vuex'
import {get} from '@/utils/request'
export default {
  // 组件名称
  name: 'demo',
  // 组件参数 接收来自父组件的数据
  props: {},
  // 组件状态值
  data () {
   return {
     form:{},
     rules:{
      trainId: [ { required: true, message: '请选择实训', trigger: 'change' } ],
      channelId: [ { required: true, message: '请选择渠道', trigger: 'change' } ],
      graduationTime: [ { required: true, message: '请选择毕业时间', trigger: 'change' } ],
      education:[ { required: true, message: '请选择学历水平', trigger: 'change' } ],
     },
     trainData:{list:[]}
   }
  },
  // 计算属性
  computed: {
    ...mapGetters(['channels'])
  },
  // 侦听器
  watch: {},
  // 组件方法
  methods: {
    importSubmitHandler(){
      this.$refs['form_import'].validate((valid) => {
        if (valid) {
          this.$refs.upload.submit();
        } else {
          return false
        }
      })
    },
    // 下载模板
    downloadTemplate(){
      window.location.href='http://218.4.196.178:8008/studentTrain/downloadTemplate'
    },
    // 导入成功
    successSubmitHandler(response){
      if(response.status === 200){
        this.$message({ message: response.message, type: 'success' })
        this.goBack();
      } else {
        this.$message({ message: response.message, type: 'error' })
      }
      
    },
    goBack(){
      this.$router.back()
    },
    // 查询实训信息
    loadTrains(){
      // 添加loading,页面加载开始
      let url = "/train/pageQuery"
      get(url,{page:1,pageSize:10,channelId:this.form.channelId}).then(response => {
        this.trainData = response.data;
      })
    },
  },
  // 以下是生命周期钩子
  /**
  * 组件实例创建完成，属性已绑定，但DOM还未生成，$ el属性还不存在
  */
  created () {
    this.loadTrains();
  },
  /**
  * el 被新创建的 vm.$ el 替换，并挂载到实例上去之后调用该钩子。
  * 如果 root 实例挂载了一个文档内元素，当 mounted 被调用时 vm.$ el 也在文档内。
  */
  mounted () {
  },
  /**
  * 实例销毁之前调用。在这一步，实例仍然完全可用。
  */
  beforeDestroy () {
  },
  /**
  * Vue 实例销毁后调用。调用后，Vue 实例指示的所有东西都会解绑定，
  * 所有的事件监听器会被移除，所有的子实例也会被销毁。
  */
  destroyed () {
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<!--使用了scoped属性之后，父组件的style样式将不会渗透到子组件中，-->
<!--然而子组件的根节点元素会同时被设置了scoped的父css样式和设置了scoped的子css样式影响，-->
<!--这么设计的目的是父组件可以对子组件根元素进行布局。-->
<style scoped>
.student_import {
  font-size: 14px;
  color: #666;
}
</style>
